package SSO.login;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import SSO.sso.SsoUtil;

import com.cx.api.MemberUserApi;
import com.cx.entity.user.MemberUserEntity;
import com.cx.utils.CommonUtil;
import com.cx.utils.ConfigUtil;
import com.cx.utils.ReturnData;
import com.cx.utils.WebUtil;
import com.cx.utils.rps.RequestParameters;

@Controller
@RequestMapping(value="/login")
public class LoginController {
	private static final String SUCCESS_Login = "Logon";//登陆成功标志
	private static final String OUT_Login = "LoginOut";//注销登录标志
	@Autowired
	private MemberUserApi memberUserApi;
	
	/**
	 * 
	 * @Description(功能描述)    :  跳转请求登录页面
	 * @author(作者)             ：  曹轩
	 * @date (开发日期)          :  2015年10月15日 下午2:24:37 
	 * @exception                : 
	 * @param request
	 * @param map
	 * @return  Object
	 */
	@RequestMapping(value="/toLogin",method=RequestMethod.GET)
	public Object openLoginPage(HttpServletRequest request,ModelMap map){
		String goUrl = request.getParameter("goto");
		map.put("goto", goUrl);
		MemberUserEntity result = (MemberUserEntity)SsoUtil.verfyLogin(request);
		if(CommonUtil.isEmpty(result)){
			return "login/login";
		}else{
			if(CommonUtil.isEmpty(goUrl)){
				map.put("url", ConfigUtil.getString("cx_index", null));
			}else{
				map.put("url", goUrl);
			}
			return "login/jumpPage";
		}
	}
	
	/**
	 * 
	 * @Description(功能描述)    :  登录
	 * @author(作者)             ：  曹轩
	 * @date (开发日期)          :  2015年10月15日 下午2:25:19 
	 * @exception                : 
	 * @param request
	 * @param response
	 * @return
	 * @throws Exception  Object
	 */
	@RequestMapping(value="/login")
	@ResponseBody
	public Object signIn(HttpServletRequest request,HttpServletResponse response) throws Exception{
		ReturnData reData = new ReturnData();
		RequestParameters rps = WebUtil.getParameterAsRps(request);
		//验证是否已经登录
		if(!CommonUtil.isEmpty(rps.get("isLogin"))&&SUCCESS_Login.equals(rps.get("isLogin"))){
			String result = SsoUtil.verifyLogin(rps);
			return result;
		}else{
			MemberUserEntity user =  memberUserApi.getUser(rps);
			if(CommonUtil.isEmpty(user)){
				reData.setSuccess(false);
				reData.setErrorMessage("帐号/密码不正确");
				return reData;
			}
			//绑定单点登录（进行cookie处理）
			SsoUtil.toLogin(request, response,user);
		}
		reData.setSuccess(true);
		if(CommonUtil.isEmpty(rps.get("goto"))){
			reData.setMessage(ConfigUtil.getString("cx_index", null));
		}else{
			String url = rps.get("goto").toString();
			reData.setMessage(url);
		}
		return reData;
	}
	
	/**
	 * 
	 * @Description(功能描述)    :  注销
	 * @author(作者)             ：  曹轩
	 * @date (开发日期)          :  2015年10月15日 下午2:29:56 
	 * @exception                : 
	 * @param request
	 * @param map
	 * @return  Object
	 */
	@RequestMapping(value="/out",method=RequestMethod.GET)
	public Object signOut(HttpServletRequest request,ModelMap map){
		String action = request.getParameter("action");
		if(action.equals(OUT_Login)){
			SsoUtil.signOut(request);
		}
		return "login/login";
	}
}
